/*
翻译密码。按一定规律转换成密码，再按规定的规律将其译回原文。
A B C D E F G ... W X Y Z
非字母字符保持原状不变

解题思路：问题有两个：
1. 决定哪些字符不需要改变，哪些字符需要改变，如果需要改变，应改为哪个字符
- 处理的方法是：输入一个字符给字符变量c，先判断它是否是字母（包括大小写），若不是字母，不改变c的值；若是字母，则还有检查它是否'W'到'Z'的范围内（包括大小写字母）。如不在此范围内，则使变量c的值改变为其后第4个字母。如果在'W'到'Z'的范围内，则应将它转换为A-D（或a-d）之一的字母。
2. 怎样使c改变为所指定的字母？
- 办法是改变它的ASCII值
- 例如字符变量c的原值是大写字母'A'，想使c的值改变为'E'，只需执行 c=c+4 即可，因为'A'的ASCII值为65，而'E'的ASCII值为69，二者相差4
*/
#include <stdio.h>
int main()
{
    char c;
    printf("请输入一个字符串：");
    for (c = getchar(); c != '\n'; c = getchar())
    {
        if (c >= 'A' && c <= 'Z')
        {
            c = c + 4;
            if (c > 'Z')
                c = c - 26; // 回到 A
        }
        else if (c >= 'a' && c <= 'z')
        {
            c = c + 4;
            if (c > 'z')
                c = c - 26; // 回到 a
        }
        putchar(c);
    }
    return 0;
}
// 输入 "China!" 返回 "Glmre!"